Wysyłanie powiadomień SMS z usługi monitoringu przy użyciu Amazon SNS
W artykule przedstawię prosty sposób przygotowania usługi Amazon AWS SNS (Simple Notification Service) do wysyłania powiadomień z systemu monitoringu Icinga 2. Szczegóły dla tej usług znajdziecie Państwo na stronie https://aws.amazon.com/sns/. Opiszę również jak skonfigurować sam system monitorowania usługi do wysyłania powiadomień z usługi SNS. Jako,że ilość informacji jest dość długa rozbijemy go na 2 części. W pierwszej opiszemy jak przygotować usługę SNS i skonfigurować politykę dostępu oraz użytkownika w IAM. W drugiej skonfigurujemy serwer z systemem Icinga2 oraz uruchomimy na nim działającą usługę.
Amazon SNS (Simple Notification Service) służy do wysyłania powiadomień zarówno HTTP/s, jak i wiadomości SMS czy e-mail. Wiadomości mogą byś wysyłane nie tylko z usług Amazon Web Services, ale również z każdej innej usługi jak np. wysyłanie wiadomości SMS z systemu monitoringu Icinga 2. W tym artykule użyliśmy prostego przykładu z dla systemu Icinga 2, ponieważ jest to jeden z produktów, który oferujemy naszym klientom.
W tym artykule usługa SNS będzie nam służyła do wysyłania wiadomości SMS z systemu monitoringu Icinga 2. Jeśli system monitoringu wykryje, że jeden z serwerów będzie niedostępny, wyślę on do administratora wiadomość sms, za pomocą usługi SNS. Wiadomości mogą być również wysyłane, jeśli jedna z monitorowanych usług będzie niedostępna. Przed uruchomieniem usługi SNS, należy zapoznać się z planem płatności dostępnym na stronie https://aws.amazon.com/sns/pricing/. Warto zwrócić uwagę, że dla usługi SNS istnieje "Free Tier", gdzie za darmo możemy wysłać 100 wiadomości SMS oraz 1000 wiadomości e-mail.
W pierwszej kolejności zaczniemy od przygotowania środowiska Amazon w graficznej konsoli AWS Management Console.
Konfiguracja usługi Amazon SNS za pomocą konsoli "AWS Management Console"
Po zalogowaniu się do środowiska Amazon AWS wyszukujemy usługę "Simple Notification Service" (Rys. 1 - Simple Notification Service) i przechodzimy do "Create Topic" (Rys. 2 - Create topic).
Rys. 1 - Simple Notification Service
Rys. 2 - Create topic
Po kliknięciu "Create Topic" powinno wyskoczyć okienko "Create new topic" (Rys. 3 - Create new topic), w którym wpisujemy "Topic name" oraz "Display name". Ciekawostką jest, że "Display name" może mieć maksymalnie 10 znaków, a "Topic name" może mieć 256 oraz nie ma możliwość późniejszej zmiany "Topic name". Pole "Display name" możemy modyfikować w dowolnym momencie i może być on używany do identyfikacji tego zasobu.
Rys. 3 - Create new topic
Po kliknięciu "Create topic" ujrzymy podsumowanie, w którym zamieszczony będzie "Topic ARN" (Rys. 4 - Topic ARN). ARN będzie nam potrzebny do konfiguracji polityki bezpieczeństwa dla użytkownika z uprawnieniami do wysyłania powiadomień i służy on jako identyfikator tego topicu.
Rys. 4 - Topic ARN
Teraz przechodzimy do stworzenia subskrypcji "Create subscription" widocznym w szczegółach "topicu". Jeśli zrobimy to w ten sposób, nie będziemy potrzebowali kopiować ARN wcześniej. Możemy również przejść po lewej stronie do "Subscriptions" i tam następnie stworzyć subskrypcje, ale wtedy nie zapomnijmy skopiować ciągu ARN "topicu".
Tworzenie subskrypcji to nic innego jak dodanie kontaktu, numeru telefonu w przypadku SMS, gdzie będą miały spływać powiadomienia z monitoringu. Wracając do naszego identyfikatora ARN danego "Topicu", warto go skopiować teraz i odłożyć gdzieś na boku, ponieważ będzie on nam potrzebny przy tworzeniu polityki dostępu do tego zasobu.
Po kliknięciu "Create subscription" ujrzymy nowe okno z prośbą o wybranie protokołu (Rys. 5 - Create subscription). W naszym przypadku będzie to SMS, ale może być również całkiem inny protokół. Za protokół rozumiemy tutaj kanał komunikacyjny, jakim ma zostać wysłane powiadomienie. Może to być SMS, e-mail, wejście na jakąś stronę po http/s, a także wykonanie dowolnej funkcji AWS Lambda. W polu "Endpoint" podajemy numer telefonu, na którym chcemy, aby była wysyłana wiadomość SMS.
Rys. 5 - Create subscription
Po stworzeniu subskrypcji przejdziemy do szczegółów danego "topicu" i ujrzymy dodaną subskrypcje z widocznym numerem kontaktowym (Rys. 6 - Topic details).
Rys. 6 - Topic details
Na tym możemy zakończyć tworzenie konfigurację usługi Amazon SNS, która w zupełności wystarczy nam w podstawowym zastosowaniu systemu monitoringu.
Dodanie polityki dostępu oraz użytkownika w IAM z możliwością wysyłania sms
Jeśli nie posiadamy jeszcze utworzonego użytkownika IAM z ograniczonym dostępem i możliwością wysyłania powiadomień, zapoznajmy się z poniższymi informacjami.
W pierwszej kolejności tworzymy politykę dostępu, którą następnie przypiszemy do nowo utworzonego użytkownika. Utworzenie polityki dostępu jest niezbędne, jeśli chcemy zachować pewny poziom bezpieczeństwa i ograniczyć możliwość korzystania z usług przez wybranego użytkownika.
W tym celu przechodzimy do "My Security Credentials" -> "Policies".
Następnie klikamy "Create policy" aby utworzyć nową politykę (Rys. 7 - Create policy).
Rys. 7 - Create policy
Ujrzymy edytor wizualny, gdzie w prosty sposób możemy dodać dostęp do wybranych zasobów przez zdefiniowanie pola "Actions". Poniżej zobaczymy politykę dla usługi SNS, z wybraną akcją zapisu "Publish" dla wcześniej utworzonego "Topicu" w usłudze SNS (Rys. 8 - Review policy - Visual editor).
Rys. 8 - Review policy - Visual editor
Na kolejnym zrzucie ekranu (Rys. 9 - Review policy - JSON) znajduje się również ta sama polityka w kodzie JSON.
Rys. 9 - Review policy - JSON
Klikamy "Review policy" i przechodzimy do następnego okna, w którym możemy wpisać nazwę polityki oraz jej opis (Rys. 10 - Review policy).
Rys. 10 - Review policy
Po kliknięciu "Create policy" utworzymy własną politykę, która będzie widoczna na liście łącznie z pozostałymi politykami. Jeśli chcemy ograniczyć się tylko do własnych utworzonych polityk, możemy je odfiltrować i wskazać jedynie "Customer managed", po czym zostaną wyświetlone tylko utworzone przez nas polityki (Rys. 11 - Lista polityk).
Rys. 11 - Lista polityk
Dodawanie użytkownika IAM
Logujemy się do konsoli AWS w celu utworzenia nowego użytkownika z ograniczonym dostępem. Po zalogowaniu wybieramy "My Security Credentials" -> "Users" -> "Add user" (Rys. 12 - Add IAM user).
Rys. 12 - Add IAM user
Podajemy nazwę użytkownika i wybieramy dostęp "Programmatic Acces" (Rys. 13 - Programmatic access). Dzięki temu użytkownik będzie miał dostęp do AWS API i zostanie mu przypisany Access key i Secret access key, który będzie używany do uwierzytelnienia użytkownika.
Rys. 13 - Programmatic access
Klikamy "Next Permissions" i wybieramy wcześniej utworzoną politykę bezpieczeństwa (Rys. 14 - Set permissions).
Rys. 14 - Set permissions
Klikamy "Next Review", weryfikujemy czy nazwa użytkownika się zgadza i klikamy "Create user" (Rys. 15 - Create user).
Rys. 15 - Create user
Po kliknięciu "Create User' w następnym etapie zobaczymy przypisany do naszego użytkownika "Access Key ID" oraz "Secret access key", który będziemy używać przy konfiguracji serwera z systemem Icinga 2 (Rys. 16 - Access key ID i Secret access key).
Rys. 16 - Access key ID i Secret access key
Poniżej zamieszczam jeszcze politykę bezpieczeństwa, którą użyliśmy w tym artykule, aby ograniczyć dostęp dla wybranego użytkownika.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": "sns:Publish",
"Resource": "arn:aws:sns:us-east-1:ACOUNT_ID:Icingaweb2"
}
]
}
W kolejnym artykule opiszemy jak skonfigurowac serwer z systemem Icinga2 i uruchomimy na nim działającą usługe.
Kylos jako APN Select Consulting Partner, może Ci w tym pomóc.
Posiadamy duże doświadczenie w migracjach do chmury i budowaniu infrastruktury.
Dowiedz się więcej